package com.woniuxy.kaer.shop.config;

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;


@Configuration
public class RabbitMQConfig {

    /**
     * @description: 延迟队列 确认订单是否支付
     */
    @Bean
    public Queue confirmOrderPayQueue() {
        Map<String, Object> params = new HashMap<>();
        //定义该队列中消息的生存时间 单位毫秒 生存时间最终对应业务的延迟执行时间
        params.put("x-message-ttl", 15 * 60 * 1000);
        // x-dead-letter-exchange 属性用于声明死信转发到的交换机
        params.put("x-dead-letter-exchange", "confirm_pay_ex");
        // x-dead-letter-routing-key 声明了这些死信在转发时携带的路由键名称。
        params.put("x-dead-letter-routing-key", "confirm_order_pay");
        return new Queue("confirm_order_pay_queue", true, false, false, params);
    }


    /**
     * @description: 延迟队列 订单自动好评
     */
    @Bean
    public Queue evaluateOrderQueue() {
        Map<String, Object> params = new HashMap<>();
        //定义该队列中消息的生存时间 单位毫秒 生存时间最终对应业务的延迟执行时间
        params.put("x-message-ttl", 3 * 60 * 1000);
        // x-dead-letter-exchange 属性用于声明死信转发到的交换机
        params.put("x-dead-letter-exchange", "evaluate_order_ex");
        // x-dead-letter-routing-key 声明了这些死信在转发时携带的路由键名称。
        params.put("x-dead-letter-routing-key", "evaluate_order");
        return new Queue("evaluate_order_queue", true, false, false, params);
    }


}
